Data may be provided to tape drives in the form of transactions, and often a sequence of transactions. Commands may follow data transactions that comprise backspace (a.k.a. “space back”) commands which logically position the drive further back in data so that if data is then written, it partially or wholly overwrites a previous transaction, known as an overwrite append. One example of backspacing and then overwrite appending is an ANSI standard write method that is used to guarantee that even if the host stops writing files (e.g. the connection is lost), the last written file is followed by two filemarks instead of one, the two filemarks identifying the location of the end of the last written file. The write method loops between three operations: 1) write some amount of data which will constitute a file, 2) write two filemarks, and 3) backspace one filemark. Each file is followed by one filemark and the last written file is followed by two filemarks. In other applications, a backspace command may also be employed to cause a subsequent write operation to overwrite some amount of data. A backspace command requires the magnetic tape drive to backhitch to delete or overwrite previously written material, such as the second of the two filemarks.
Magnetic tape drives may be optimized for continuous streaming, instead of stop and start operations. Backhitching during write is a function in which a magnetic tape drive typically stops forward motion of a magnetic tape, reverses the motion of the magnetic tape to position the magnetic tape behind the position at which a backspace command directs, and stops the reverse motion of the magnetic tape, and, in response to a write command, accelerates the magnetic tape to writing speed so as to be able to begin writing or overwriting at the correct point. The backhitch function takes time to accomplish and thereby reduces the performance of the magnetic tape drive as compared to streaming.
It may be possible to organize the data in a buffer in such a way that the backspace and overwrite append are provided logically. For example, the backspace and overwrite append commands may be utilized to ignore the data that has been backspaced over when reading out of the buffer. However, if the data is to be preserved on magnetic tape to insure against loss in the event of an error, such as loss of power to the buffer, this approach alone would not meet the requirements of truly preserving the data.